import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

//actions中写的是一个一个的方法，这些方法，用于响应组件中的动作（dispatch）
const actions = {
	async jiaNews({commit}){
		try {
			const result = await axios.get('https://api.uixsj.cn/hitokoto/get?type=soup')
			commit('JIA_NEWS',result.data)
		} catch (error) {
			console.log('@',error.message)
		}
	},
	jiaStu({commit},stuObj){
		if(stuObj.name.startsWith('刘')){
			commit('JIA_STU',stuObj)
		}
	}
}

//mutations中写的是一个一个的方法，这些方法，用于真正去操作数据（commit）
const mutations = {
	JIA_NEWS(state,news){
		state.newsList.unshift(news)
	},
	JIA_STU(state,stuObj){
		state.stuList.unshift(stuObj)
	}
}

//Vuex中初始化的数据
const state = {
	stuList:[
		{id:'001',name:'刘三岁'}
	],
	newsList:[
		'震惊！张三竟然和自己的铁哥们做出了这种事！'
	]
}

//若vuex中state里的数据，需要经过一些处理再使用，那么可以写在getters
const getters = {
	newsTotal(state){
		return state.newsList.length
	},
	stuTotal(state){
		return state.stuList.length
	}
}

export default new Vuex.Store({
	actions,
	mutations,
	state,
	getters
})